﻿#define  _CRT_SECURE_NO_WARNINGS
#include<stdint.h>
//int main() //左移操作符，左边抛弃、右边补0
//{
//
//
//	int num = 10;
//	int n = num << 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//
//
//}

//int main()//右移操作符，有两种规则，但一般是算术右移
//1. 逻辑右移：左边⽤0填充，右边丢弃
//2. 算术右移：左边⽤原该值的符号位填充，右边丢弃
//{
//	int num = 10;
//	int n = num >> 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//}
////对于移位运算符，不要移动负数位，这个是标准未定义的。
//int num = 10;


//int main()
//{
	// 位操作符：&、|、^、~
	//& | ^ ~
	//	//
	//	按位与

	//	//
	//	按位或

	//	//
	//	按位异或

	//	//
	//	按位取反

	//int num1 = -3;
	//int num2 = 5;
	//printf("%d\n", num1 & num2);
	//printf("%d\n", num1 | num2);
	//printf("%d\n", num1 ^ num2);
	//printf("%d\n", ~0);
	//return 0;
//}

//int main()//利用按位，在不创建第三个变量时交换位置
//{
//	int a = 10;
//	int b = 20;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("a = %d  b = %d\n", a, b);
//
//	return 0;
//}


//int main()
//{
//
//	//
//	⽅法
//		1
//#include <stdio.h>
//		int main()
//	{
//		int num = 10;
//		int count = 0;//
//		计数
//
//			while (num)
//			{
//				if (num % 2 == 1)
//					count++;
//				num = num / 2;
//			}printf(=⼆进制中	1的个数 = % d\n",count);
//				return 0;
//	}
//	//
//	思考这样的实现⽅式有没有问题？
//
//		//
//		⽅法
//		2
//		：
//
//#include <stdio.h>
//		int main()
//	{
//		int num = -1;
//		int i = 0;
//		int count = 0;//
//		计数
//
//			for (i = 0; i < 32; i++)
//			{
//				if (num & (1 << i))
//					count++;
//			}
//		printf("
//			⼆进制中
//			1
//			的个数
//			= % d\n",count);
//			return 0;
//	}
//	//思考还能不能更加优化，这⾥必须循环32次的。
//
//		//⽅法3
//		：
//		int num = -1;
//	int i = 0;
//	int count = 0;//
//
//while (num)
//		{
//			count++;
//			num = num & (num - 1);
//		}
//	printf("⼆进制中1的个数= % d\n",count);
//	return 0;
//}

//函数操作符，操作数
//最少可以一个操作数

//结构体,定义
//struct tag
//{
//	
//	member-list;
//}variable-list;
struct Id
{
	int x;
	char id[25]
};
struct stu
{
	char name[20];
	int age;
	struct Id id;
	char sex[5];
	char id[20];
};
int main()
{
	struct stu s1 = { "Stream", 20,{1,"2005"}, 60.0 };//局部变量，嵌套结构体
	printf("x: %d y: %d\n", p.x, p.y);//结构体成员访问，结构体变量.成员
	return 0;
}

  
